問題解説: Webページが見られない
はじめまして。本問題の雑用係をしています工学院大学の福田夏樹と申します。
問題解説のブログを書いて欲しいというリーダからのお願いを受けて、締め切りギリギリになって本記事を書き始めました。
拙文ではありますが、問題解説をさせていただきます。
問題概要 : Webページが見られない
問題文
本日、我が’boku-tech company’のカスタマーサービスセンターから、
「Webページに接続できない。接続できても重い」
という苦情が寄せられていることが判明した。
また、数日前に新しいサーバが納品され、社内のネットワークのどこかに接続されたようだ。
しかし、その作業は外部の業者が行っており、ネットワークや納入されたサーバの状況を社内で知っている人はいない。
今回に限り、優秀な技術者と聞く君たちに該当のサーバ類の一部の操作権を付与する。
現状を調査した上でその解決をし、その原因と解決方法を報告してほしい。
なお、サーバ上では各種サービスが動いているらしいが、それらや他のサーバを完全停止することはできない。
我が社が作業を外注した時の資料を入手することができた。
その資料には下記の制約が書かれていた。
この制約を満たすように設定・定義してもらいたい。この制約に反しないかぎり、他の設定を変更しても構わない。
- webサーバーのリソースをsnmpプロトコルを用いてサービスサーバにログが残させる事
- Service Server に対して、ドメイン “service.rabbit” のAレコードが引けること
- webサーバに含まれるコンテツの再生が出来る事
君たちが操作できるサーバは下記のとおりである
Service Server
- IP : 10.X.8.66
- User: admin
- Password : チームごとに与えられているもの
Web Server
- IP: 10.X.8.2
- User: admin
- Password : チームごとに与えられているもの
Router
– IP : 10.X.8.192
– User: vyos
– Password : チームごとに与えられているもの
トラブルの原因
まずは、トラブルを起こしていたトポロジ図は下記のようになります。
今回の問題でトラブルとして使用したものは次のものです
- SNMP のリクエストによるCPU枯渇
- Ping パケットの大量送信による帯域枯渇
- SYN Flood によるセッション数枯渇
その他、仕込んでいたトラブルも有りましたが、そのあたりは ICTSC5の1日目にあったLTの資料をご参考にください。
解決方法
上記のトラブルの原因を一つ一つ解決していけば解決できます。
代表的な解決方法を上げると、以下のようになります。
SNMP
SNMPのコミュニティ名をデフォルトである public
から任意のものに変更する。
今回の問題では、/etc/snmp/snmpd.conf
に記述されている public
という文字列を任意のものに書き換えることができれば解決になります。
Ping
VyOS にて、ICMPのフィルタリングをする。
フィルタリングの方法は複数あるので、コマンドは省略しますが、検索をかけるといくつか出てきます。
SYN
サーバOSのSynCookieを有効化する。
今回の問題の場合は、次のコマンドを入力すると解決になります。
sysctl -w net.ipv4.tcp_syncookie=1
などあります。
その他の解説などは、本問題担当であった法政大学の伊東氏がLT資料やブログを書いているので、ご参考にしてください。
出題意図
近年世界的に起きているDoS攻撃の基本的な対策方法を日本の若きエンジニア達に知ってほしいため、
また、前回大会において出題されたセキュリティ攻撃に関する問題においての解答率が出題者の想定よりも低かったため、本大会では攻撃の種類を変えて、再度出題しました。
採点基準
問題文に記述されている
- webサーバーのリソースをsnmpプロトコルを用いてサービスサーバにログが残させる事
- Service Server に対して、ドメイン “service.rabbit” のAレコードが引けること
- webサーバに含まれるコンテツの再生が出来る事
を満たす様な設定ができているかを判断しています。
簡単に言うと、原因となっている攻撃がフィルタリング等できていれば得点が入る様にしました。
最後に
問題を解いたみなさんは、解けた時はとても嬉しいと思いますが、
実は出題者側も、みなさんが解いてくれた時は嬉しかったりします。
本問題は一般的にはDDoS攻撃という部類になり、その攻撃手法は今回のもののみではなく多岐に渡ります。
更に、その対処も難しいものとなっています。
セキュリティ的な脆弱性も、ヒューマンエラーによるものでも、ソフトウェアにある潜在的なものでも、トラブルの元となるということも知っていただければ幸いです。
では、又の機会にお会いしましょう。